home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Languages Suite
/
ProgramD2.iso
/
Borland
/
Borland C++ V5.02
/
WRITEPAD.PAK
/
FILEDLG.C
< prev
next >
Wrap
C/C++ Source or Header
|
1997-05-06
|
6KB
|
220 lines
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (C) 1993-1995 Microsoft Corporation. All Rights Reserved.
//
// MODULE: filedlg.c
//
// PURPOSE: Shows basic use of "Open" and "Save As" common dialogs.
//
//
// FUNCTIONS:
// CmdFileOpen - Uses Open common dialog to prompt user for filename
// CmdFileSaveAs - Uses Save common dialog to prompt user for filename
//
//
// COMMENTS:
//
//
//
// SPECIAL INSTRUCTIONS: N/A
//
#include <windows.h> // required for all Windows applications
#include "globals.h" // prototypes specific to this application
#include "resource.h"
static char szDirName[256] = {'\0'}; // directory string
void SetDirectory(LPOPENFILENAME);
//
// FUNCTION: CmdFileOpen(HWND, WORD, WORD, HWND)
//
// PURPOSE: Call the open common dialog and show its results.
//
// PARAMETERS:
// hwnd - The window handle.
// wCommand - IDM_OPEN (Unused)
// wNotify - (Unused)
// hwndCtrl - NULL (Unused)
//
// RETURN VALUE:
// Always returns 0
//
// COMMENTS:
//
//
#pragma argsused
LRESULT CmdFileOpen(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl)
{
OPENFILENAME ofn = {0}; // common dialog box structure
char szFile[256]; // filename string
char szFileTitle[256]; // file-title string
char szFilter[256]; // filter string
char chReplace; // strparator for szFilter
int i, cbString; // integer count variables
// Retrieve the current directory name and store it in szDirName.
if (szDirName[0] == '\0')
{
GetCurrentDirectory(sizeof(szDirName), szDirName);
}
// Place the terminating null character in the szFile.
szFile[0] = '\0';
// Load the filter string from the resource file.
cbString = LoadString(hInst, IDS_FILTERSTRING, szFilter, sizeof(szFilter));
// Add a terminating null character to the filter string.
chReplace = szFilter[cbString - 1];
for (i = 0; szFilter[i] != '\0'; i++)
{
if (szFilter[i] == chReplace)
szFilter[i] = '\0';
}
// Set the members of the OPENFILENAME structure.
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFileTitle = sizeof(szFileTitle);
ofn.lpstrInitialDir = szDirName;
ofn.Flags = OFN_SHOWHELP | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// Display the Open dialog box.
if (GetOpenFileName(&ofn))
{
CreateMDIChild(ofn.lpstrFile);
Open(ofn.lpstrFile,
MAKEBOOL((ofn.Flags & OFN_READONLY)),
hwnd);
SetDirectory(&ofn);
}
return 0;
}
//
// FUNCTION: CmdFileSaveAs(HWND, WORD, WORD, HWND)
//
// PURPOSE: Call the SaveAs common dialog and show the results.
//
// PARAMETERS:
// hwnd - The window handle.
// wCommand - IDM_SAVEAS (Unused)
// wNotify - (Unused)
// hwndCtrl - NULL (Unused)
//
// RETURN VALUE:
// Always returns 0
//
// COMMENTS:
//
//
#pragma argsused
LRESULT CmdFileSaveAs(HWND hwnd,
WORD wCommand,
WORD wNotify,
HWND hwndCtrl)
{
OPENFILENAME ofn = {0}; // common dialog box structure
char szFile[256]; // filename string
char szFileTitle[256]; // file-title string
char szFilter[256]; // filter string
char szCurrentFileName[256]; // current filename
char chReplace; // string separator for szFilter
int i, cbString; // integer count variables
// Retrieve the current directory name and store it in szDirName.
if (szDirName[0] == '\0')
{
GetCurrentDirectory(sizeof(szDirName), szDirName);
}
// Place the terminating null character in szFile.
szFile[0] = '\0';
// Load the filter string from the .RC file.
cbString = LoadString(hInst, IDS_FILTERSTRING, szFilter, sizeof(szFilter));
// Add a terminating null character to the filter string.
chReplace = szFilter[cbString - 1];
for (i = 0; szFilter[i] != '\0'; i++)
{
if (szFilter[i] == chReplace)
szFilter[i] = '\0';
}
// Set the members of the OPENFILENAME structure.
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFileTitle = sizeof(szFileTitle);
ofn.lpstrInitialDir = szDirName;
ofn.lpstrDefExt = "txt";
ofn.Flags = OFN_SHOWHELP | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
// Display the Save As dialog box.
if (GetSaveFileName(&ofn))
{
GetWindowText(GetActiveMDIChild(),
szCurrentFileName,
sizeof(szCurrentFileName));
SetWindowText(GetActiveMDIChild(), ofn.lpstrFile);
SaveAs(ofn.lpstrFile, szCurrentFileName, GetActiveMDIChild());
SetDirectory(&ofn);
return TRUE;
}
return 0;
}
//
// FUNCTION: SetDirectory(LPOPENFILENAME)
//
// PURPOSE: Saves the path to the current directory for future use
//
// PARAMETERS:
// lpofn - Long pointer to the OPENFILENAME structure
//
// RETURN VALUE:
// void
//
// COMMENTS:
//
//
void SetDirectory(LPOPENFILENAME lpofn)
{
lpofn->lpstrFile[lpofn->nFileOffset] = '\0';
lstrcpy(szDirName, lpofn->lpstrFile);
}